import { A } from './0_common';

/**
 * 返回一个新类型，将指定对象所有属性设置为只读
 */
type _Readonly<T> = {
  readonly [ P in keyof T] : T[P];
}

/**
 * 将指定对象所有属性设置为可写，并返回新类型
 */
type Mutable<T> = {
  -readonly [ P in keyof T ] : T[P];
}

type ReadonlyA = _Readonly<A>;
type MutableA = Mutable<A>;